package miage.rest.validation;

import java.util.Collection;
import java.util.List;
import org.restlet.data.Parameter;

/**
 * Classe de représentation d'un formulaire pouvant être validé
 * @author Schwartz Michaël
 */
public interface ValidatableForm extends Validatable, Iterable<Parameter>, Collection<Parameter>, List<Parameter> {

	/**
	 * Ajoute une condition de validation sur les paramètres identifiés par {parameterName}
	 * 
	 * @param le nom du paramètre
	 * @param validator un validateur de chaine de caractère
	 */
	public void addValidator(String parameterName, Validator<String> validator);

	/**
	 * Retire une condition de validation sur les paramètres {parameterName}
	 *
	 * @param le nom du paramètre
	 * @param validator
	 */
	public void removeValidator(String parameterName, Validator<String> validator);

	/**
	 * Retire toutes les condition de validation sur les parametres ayant pour nom {parameterName}
	 * @param parameterName
	 */
	public void clearValidators(String parameterName);


	/**
	 * Définir les conditions de validation pour les paramètres portant le nom {parameterName}
	 * @param parameterName
	 * @param validators
	 */
	public void setValidators(String parameterName, List<Validator<String>> validators);
}
